package com.han.combination;

/**
 * @ClassName MenuComponent
 * @Description 菜单组件：抽象根节点
 * @Author duoduo Han
 * @Date 2024/6/12 21:48
 */
public abstract class MenuComponent {
    //菜单组件的名称
    protected String name;
    protected int level;

    //添加子菜单
    //如果写成抽象函数，则子类必须实现，否则报错；但是菜单组件本身没有子菜单，所以不需要实现
    //因此这里默认的实现是抛出异常
    public void add(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }
    //移除子菜单
    public void remove(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }
    //获取指定的子菜单
    public MenuComponent getChild(int index){
        throw new UnsupportedOperationException();
    }

    //获取菜单或者菜单项的名称
    public String getName() {
        return name;
    }
    //打印菜单名称的方法(包含子菜单和菜单项)
    public abstract void print();
}
